package com.sfx.other.多线程样例测试;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 * Date: 2023-08-03
 * Time: 14:22
 */
public class Demo1 {
    ThreadLocal<String> threadLocal = new ThreadLocal<>();
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 线程隔离 :
     * 线程A中有A变量, 线程B中有B变量
     * 在多线程的场景下,线程A不会取到B变量,只会取到自己线程内部的变量
     * 线程B不会取到A变量,只会取到自己线程内部的变量
     */
    public static void main(String[] args) {
        Demo1 demo = new Demo1();
        //创建5个线程都进行set和get看得到的是否是自己线程内部的
        for (int i = 0; i < 5; ++i) {
            //每一个线程都进行setContent和getContent
            new Thread(()->{
                synchronized (Demo1.class) {
                    demo.setContent(Thread.currentThread().getName());
                    System.out.println(Thread.currentThread().getName() + "--->" + demo.getContent());
                }
            },"线程" + i).start();
        }
    }
}